#!/bin/bash
# -----------------------------------------------------------------------
# - Feito por: Douglas Giorgio Fim					-
# - E-mail: douglasfim@yahoo.com.br					-
# - Programa: dgfports							-
# - Versao: x.x								-
# -									-
# - Este script pode ser alterado e distribuido por qualquer pessoa,	-
# - desde que este quadro se mantenha inalterado.			-
# -									-
# - Obs.:	Este script foi desenvolvido para criação de ports com 	-
# - 		scripts do slackbuilds.org.		   		-
# - 		Não me responsabilizo pelas alterações do usuário.	-
# -----------------------------------------------------------------------
#
# recomendo alterar somente as variaveis.

DIRPORTS=/usr/portslackware # defina aqui o diretorio padrão do ports, evite colocar diretorio existente, de preferencia não alterar.
PORTSDB=/var/portslackware-database
DEP=dependencies
SLACK_VERSION=$(cat /etc/slackware-version | awk '{print $2}' | cut -d"." -f1-2) # defina aqui a versão de seu slackware, esse valor tem que ser o mesmo do slackbuilds.org
PORTSCRIPT=portscript.sh
PORTSCRIPT_DIR=/usr/share/portslackware
DATABASE=portslackware_database-*_*.tar.bz2
TGZ_TXZ=txz


while getopts v:newdb: option
do
  case $option in
    v)
      SLACK_VERSION=$OPTARG
    ;;
    newdb)
      tar -xjvf $OPTARG -C $PORTSDB
      exit 1
    ;;
  esac
done


mkdir -pv "$DIRPORTS" || exit 1
cd "$DIRPORTS" || exit 1

SLACKBUILD_WEB() {
rm -rf $DIRPORTS/SLACKBUILDS.TXT.*
wget ftp://slackbuilds.org/$SLACK_VERSION/SLACKBUILDS.TXT.gz || echo "Falha ao tentar baixar o arquivo ftp://slackbuilds.org/$SLACK_VERSION/SLACKBUILDS.TXT.gz" || exit 1
gunzip -f $DIRPORTS/SLACKBUILDS.TXT.gz

ATUAL=`md5sum $DIRPORTS/SLACKBUILDS | awk '{print $1}' || echo nada`
NOVO=`md5sum $DIRPORTS/SLACKBUILDS.TXT | awk '{print $1}'`

if [ "$NOVO" == "$ATUAL" ] ; then
  echo "A sua versão é a mais recente"
  echo -n "Deseja dar sequencia assim mesmo? [y/N] " ; read -n1 ESCOLHA
  echo ""
  case $ESCOLHA in
    n|N|"") exit 1 ;;
    y|Y) echo "AGUARDE..." ;;
    *) echo "Parametro invalido!" ; exit 1 ;;
  esac
fi

mv $DIRPORTS/SLACKBUILDS.TXT $DIRPORTS/SLACKBUILDS
}
SLACKBUILD_WEB # comente essa linha em caso de desenvolvimento e testes

echo "for i in \$(ls -d $DIRPORTS/*/*) ; do \$i/$PORTSCRIPT \$1 ; done" > $DIRPORTS/MAKE
chmod +x $DIRPORTS/MAKE

# cria os diretorios, não é recomendavel alterar
mkdir -pv "$DIRPORTS/DISTFILES/"
touch "$DIRPORTS/DISTFILES/package_installed"
for i in `grep LOCATION: $DIRPORTS/SLACKBUILDS | awk '{print $3}'` ; do mkdir -pv $i & done 


# função criada para criação de novas funções ao script
#RECURS() {
#  for CLASSE in `ls -l "$DIRPORTS" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do 
#    cd "$DIRPORTS/$CLASSE" 
#    for PRGNAM in `ls -l "$DIRPORTS/$CLASSE" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do 
#      cd "$DIRPORTS/$CLASSE/$PRGNAM"
#      $*
#    done 
#  done
#}
# Exemplo de uso:
#
# RECURS 'touch $PORTSCRIPT'
# RECURS 'chmod +x $PORTSCRIPT'

# criando DB
CREATEDB() {
  for CLASSE in `ls -l "$DIRPORTS" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do 
    mkdir -pv "$PORTSDB/$CLASSE"
    cd "$PORTSDB/$CLASSE" 
    for PRGNAM in `ls -l "$DIRPORTS/$CLASSE" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do 
      mkdir -pv "$PORTSDB/$CLASSE/$PRGNAM"
      touch "$PORTSDB/$CLASSE/$PRGNAM/$DEP"
    done 
  done
}

CREATEDB
tar -xjvf $PORTSCRIPT_DIR/$DATABASE -C $PORTSDB

# remoção e criação de scripts, não é recomendavel alterar
for CLASSE in `ls -l "$DIRPORTS" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do 
  cd "$DIRPORTS/$CLASSE" 
  for PRGNAM in `ls -l "$DIRPORTS/$CLASSE" | grep "^d" | grep -v DISTFILES | awk '{print $9}'` ; do 
    rm -rfv $DIRPORTS/$CLASSE/$PRGNAM/$PORTSCRIPT
    echo "Criando script $DIRPORTS/$CLASSE/$PRGNAM/$PORTSCRIPT"
    echo "
#!/bin/bash
SLACK_VERSION=$SLACK_VERSION
DIRPORTS=$DIRPORTS
CLASSE=$CLASSE
PRGNAM=$PRGNAM
TOTAL_DIR=$DIRPORTS/$CLASSE/$PRGNAM
PORTSCRIPT=$PORTSCRIPT
PORTSDB=$PORTSDB
DEP=$DEP
TGZ_TXZ=$TGZ_TXZ
" > $DIRPORTS/$CLASSE/$PRGNAM/$PORTSCRIPT
    cat $PORTSCRIPT_DIR/$PORTSCRIPT >> $DIRPORTS/$CLASSE/$PRGNAM/$PORTSCRIPT
    chmod +x $DIRPORTS/$CLASSE/$PRGNAM/$PORTSCRIPT &
  done 
done
exit 0